//app.js
import userInfoManager from './store/UserInfoManager'
import mpAppInfo from './store/MpAppInfo'
import http from './http/HttpController'
import util from './utils/util'
const commonJs = require('./common');
const wxLoginProgress = require('./wx-login')

App({
  onLaunch: function() {
    let thos = this;
    wx.getSystemInfo({
      success: function(res) {
        var version = res.SDKVersion;
        version = version.replace(/\./g, "")
        console.log("小程序基础库版本: " + version);
        thos.globalData.statusBarHeight = res.statusBarHeight;
        console.log(res.statusBarHeight);
      }
    })
    commonJs.initCommonJs();
    wxLoginProgress.startWxlogin(this);
  },
  onShow() {},
  /**
   * 登录流程结束回调,这个方法一定要放到onShow执行，因为有可能会跳出这个页面，onShow可以回来进行二次判断
   * @param {*} callback 
   * @param {*} param1 shouldLogin-是否应该登录，routePath-登录完要跳转的页面
   * shouldLogin一旦为true，那就一定是要授权(如果从来没授权过)+登录
   * 某些页面可以不需要登录使用的，那么由页面自己写按钮引导用户去授权
   */
  loginCompleteCallBack(callback, {
    shouldLogin = true,
    routePath
  }) {
    //以下为微信官方的判断授权方式
    //从多线程执行不确定上，callback对象的构建其实有极小概率会比授权请求的callback对象判空慢
    //但index页初始化不是一个网络请求，而授权过程是一个请求，那么callback其实几乎不可能会出现构建比判空慢的情况
    //如果app.js获得授权登录的速度比index加载快
    if (this.loginProgressManager.loginProcessComplete) {
      callback();
      return;
    }
    // 由于授权登录是网络请求，可能会在 Page.onLoad 之后才返回
    // 所以此处加入 callback 以防止这种情况
    this.loginProgressManager.loginProcessCompleteCallback = res => {
      callback();
    }

  },
  //登录流程状态控制标识
  loginProgressManager: {
    needAuth: true, //是否需要授权
    loginProcessCompleteCallback: null, //登录流程是否走完,与loginProcessComplete配合使用
    loginProcessComplete: false, //登录流程是否走完
  },
  globalData: {
    statusBarHeight: 0,
    wechatUserInfo: null, //点击按钮得到的或者是wx-getuserinfo得到的用户微信信息,与从后台拿到的微信用户信息区分开
  },
  http, //网络请求
  userInfoManager, //用户信息+校区信息管理
  mpAppInfo, //各种code token的管理
  util //工具类
})